#ifndef VAR_H
#define VAR_H

#include <boost/python.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>

#include <string>
#include <map>
#include <list>
#include <utility>
#include <vector>
#include <limits>
#include <cmath>
#include <cassert>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cstddef>

#include "sdMath.h"
#include "vector2.h"
#include "vector3.h"
#include "vector4.h"
#include "matrix3.h"
#include "matrix4.h"
#include "plane.h"
#include "ray.h"
#include "sphere.h"
#include "quaternion.h"
#include "planeBoundedVolume.h"
#include "axisAlignedBox.h"

#include "types.h"

namespace sde {
    
    typedef std::map<std::string, boost::python::object> PythonObjectMap;
    typedef std::list<boost::python::object> PythonObjectList;
    typedef std::map<std::string, PythonObjectList> PythonObjectListMap;
    
    boost::python::object VarToPythonObject(Var var);
    Var PythonObjectToVar(boost::python::object obj);
    
    boost::python::dict VarMapToPythonDict(VarMap vars);
    VarMap PythonDictToVarMap(boost::python::object dict);
}

#endif
